perm filename M[AP,SYS]2 blob
sn#010731 filedate 1972-11-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Start of program: main loop.
C00003 00003 Start of program: main loop.
C00005 00004 Subroutines: TOTS.
C00008 00005 Subroutines: NXTDG.
C00009 ENDMK
C⊗;
;Start of program: main loop.
TITLE M
↓CHAR←2
↓AC1 ←3
↓BOT ←4
↓CNT ←5
↓QUO ←6
↓REM ←7
↓DX ←10
↓BOT ←11
↓BP ←12
↓P ←17
↓CR←15 ↓LF←12
PDLEN←30
↓NPNS←100
PDLIST: BLOCK PDLEN
NAME: BLOCK NPNS*2
COUNT←NAME+1
BLANKS: ASCII / /
DIGITS: BLOCK 4
USERSF: SIXBIT /USERS/
BLOCK 3
IBUF: BLOCK 3
UCMD: IOWD 2,NAME+2
0
DEFINE CHKANS {
INCHRW CHAR
CAIE CHAR,"Y"
CAIN CHAR,"y"}
;Start of program: main loop.
FAILED: OUTSTR [ASCIZ / FAILED!
/]
M: CALLI
MOVE P,[IOWD PDLEN,PDLIST]
OUTSTR [ASCIZ /
START UP [-AP-]? /]
CHKANS
JRST [MOVEI AC1,[SIXBIT /[-AP-]/
SIXBIT / APSYS/
0] ;wake up now
CALLI AC1,400061 ;WAKEME
JRST FAILED
JRST DONE]
OUTSTR [ASCIZ /
PREVENT [-AP-] FROM STARTING UP? /]
CHKANS
JRST [MOVEI AC1,[SIXBIT /[-AP-]/
SIXBIT / APSYS/
-1] ;wake up never
CALLI AC1,400061 ;WAKEME
JRST FAILED
JRST DONE]
OUTSTR [ASCIZ /
USER TOTALS? /]
CHKANS
JRST TOTS
OUTSTR [ASCIZ /
THAT'S ALL FOLKS.
/]
JRST M
DONE: OUTSTR [ASCIZ / DONE
/]
CALLI 1,12 ;EXIT
JRST M
;Subroutines: TOTS.
BEGIN TOTS
↑TOTS: OUTSTR [ASCIZ/
/]
MOVEI BOT,2
SETZM COUNT
SETZM NAME
INIT 0,10
SIXBIT /DSK/
IBUF
HALT .
SETZM USERSF+3
LOOKUP 0,USERSF
JRST FAILED
GETNAM: SOSG IBUF+2
IN 0,
JRST [ILDB AC1,IBUF+1 ;GET PN
ILDB CNT,IBUF+1 ;GET COUNT FIELD FOR THIS PN
SOS IBUF+2
JUMPN AC1,FIND
JRST GETNAM]
STATO 0,20000
HALT .
RELEAS 0,
EOF: MOVNI AC1,-2(BOT)
HRLM AC1,UCMD
CAILE BOT,2
JRST NNN
OUTSTR [ASCIZ /
NO USERS YET.
/]
JRST DONE
FIND:
MOVE DX,BOT
NEXT: SUBI DX,2
CAME AC1,NAME(DX)
JUMPG DX,NEXT
JUMPN CNT,.+2 ;IS THE COUNT FIELD ZERO?
MOVEI CNT,1 ;YES. IMPLICIT COUNT OF 1.
ADDM CNT,COUNT ;ADD TO TOTAL COUNT OF PNs
JUMPLE DX,INSERT
ADDM CNT,COUNT(DX)
JRST GETNAM
INSERT: CAIL BOT,2*NPNS
JRST [OUTSTR [ASCIZ / TOO MANY PNS. /]
JRST FAILED]
MOVEM AC1,NAME(BOT)
MOVEM CNT,COUNT(BOT)
ADDI BOT,2
JRST GETNAM
PRNTNX: OUTSTR NAME(BOT)
MOVE BP,[POINT 7,DIGITS]
MOVE QUO,COUNT(BOT)
PUSHJ P,NXTDG
MOVEI QUO,CR
IDPB QUO,BP
MOVEI QUO,LF
IDPB QUO,BP
MOVEI QUO,0
IDPB QUO,BP
OUTSTR BLANKS
NNN: SUBI BOT,2
JUMPGE BOT,PRNTNX
INIT 0,17
SIXBIT /DSK/
0
HALT .
SETZM USERSF+1
SETZM USERSF+2
SETZM USERSF+3
ENTER 0,USERSF
JRST [OUTSTR [ASCIZ /
No new file written.
/]
JRST FIN]
OUT 0,UCMD
JRST FIN
RELEAS 0,3
OUTSTR [ASCIZ /
OUT UUO failed for new file.
/]
JRST DONE
FIN: RELEAS 0,
JRST DONE
BEND
;Subroutines: NXTDG.
NXTDG: IDIVI QUO,=10
PUSH P,REM
SKIPE QUO
PUSHJ P,NXTDG
POP P,QUO
ADDI QUO,60
IDPB QUO,BP
POPJ P,
END M